package com_2;

import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

@annotion1(className ="com_2.Demo1",methodName="show" )
public class ReflectDemo5  {
    public static void main(String[] args) throws Exception {
        Class<ReflectDemo5> reflectDemo5Class = ReflectDemo5.class;
        annotion1 annotation = reflectDemo5Class.getAnnotation(annotion1.class);
        String s = annotation.className();
        String s1 = annotation.methodName();
        Class<?> c = Class.forName(s);//通过获取的类名获取class文件对象
        Constructor<?> cons = c.getConstructor();//再通过class对象获取类中无参数构造方法
        Object o = cons.newInstance();//再通过newInstance创建一个类的对象
        Method m = c.getMethod(s1);//使用class文件对象调用getMethod方法获对应的方法
   m.invoke(o);//最后调用invoke方法进行调用方法

    }
}
